Persistent memory, as is well known in the industry, maintains stored information even with power applied and when power is disconnected from it whereas non-persistent memory does not retain stored information upon memory being disconnected. Dynamic random access memory (DRAM), as it is commonly known is an example of volatile or non-persistent memory. Example of persistent memory are electronic erasable programmable read only memory (EEPROM), NOR Flash, NAND Flash, and magnetic random access memory (MRAM).
Computer systems, such as laptops and desktops, among a slew of other types of devices commonly utilize non-persistent memory (NPM) in installable module configurations coupled to the central processing unit (CPU) via one or more memory buses. The non-persistent memory modules (NPMMs) are categorized in many different form factors, and each form factor has different memory densities, physical sizes and electrical connections. Common form factors of the NPMMs, included but not limited to, are: dual inline memory module (DIMM), single inline memory module SIMM, small outline dual in memory module (SODIMM), Rambus inline memory module (RIMM). A NPMM may contain a serial presence detect (SPD) device. An SPD system is comprised of two main components: a persistent memory device such as an EEPROM that is located on the memory module and an I2C bus controller, located within the memory system. The I2C controller communicates with the SPD memory device over the I2C bus. The EEPROM, 256 bytes in size, has the SDP tables that contains memory module configuration information (such as vendor ID, part number, serial number and other information about the memory devices installed on the module) stored in the first half of 128 bytes. Currently, the second half of 128 bytes is reserved for customer use.
Among many usage models of the NPMMs that attached to memory bus, included but not limited to, are: (1) the OS and/or application programs use the NPMMs for write-back caching. In this usage model, the OS first stores and manages data in the NPMMs and then transfers the data to the main storage devices (hard disk drive (HDD), solid state drive (SSD), etc. . . . ) to gain performance. (2) The OS uses the NPMMs for block data storage. A portion of the NPMMs (less than the total capacity of the memory modules) can be used as RAM block storage or also known as RAM drive or virtual drive, using customized software driver. In this usage model, during system power on, a pre-installed customized software driver allocates a range of memory address in the NPMMs and configures it to work like a local block storage drive. RAM disk can be initialized as a raw storage drive (without File System) or a formatted storage drive (with File System). In either usage model, information stored in the NPMMs gets lost when the computer system shuts down or reboots. The NPMMs require constant power to maintain information stored in it.
In usage model #1, to guard against the loss of data in the NPMMs in case of unplanned power shutdowns, system vendors, among many things, can: (1) add a battery backup power pack to the non-persistent memory modules. The battery backup power pack provides a short time back up power after power loss; (2) develop a non-volatile memory module in one of the form factors indicated above which comprises non-persistent memory array, persistent memory array, an intelligent controller, and a very large valued capacitor (supercap) or banks of individual capacitors in parallel connection. In either of these designs, when the computer system experiences an unplanned power shutdown, the controller that resides on the non-volatile module starts to transfer cached data from the non-persistent memory array to the persistent memory array to preserve the cached data, using energy from the supercap or the battery pack to power the memory electronics during the transfer operation. When the power is restored, the cached data is transferred back to the non-persistent memory array from the persistent memory array. This data transfer process is transparent to the OS.
Historically, in a computer sub-system, the basic input output system (BIOS) also known as system BIOS or read only memory (ROM) BIOS contains software to identify, enumerate, initialize and configure hardware devices such as CPUs, memory controller, non-persistent memory modules, video cards, mass storage devices, and other peripheral devices (keyboard, mouse etc. . . . ) during and after the power-on process. The BIOS software is stored in a non-persistent device which is mounted on a printed circuit board (motherboard) or on a peripheral component interconnect express (PCIe) add-on card. Historically, the BIOS software has been platform specific. In recent years, improved platform independent BIOS software known as Unified Extensible Firmware Interface (UEFI) BIOS has been introduced. UEFI BIOS enables the computer system to configure and boot to Operating System (OS) faster. In addition, it provides multiple means of extending the BIOS with additional custom software modules and subroutines. In regard to the persistent memory module (PMM), the extensible nature of the UEFI provides an environment for running PMM specific software extensions that allow the configuration, management and support of PMM before the operating system loads. The customized UEFI PMM extension software is not limited to PMM hardware only; it can also configure and adjust previously initialized system components to support the operation of the PMM. Among many different implementations, the customized UEFI PMM extension software can be launched from script or command line. The script or software that contains the command line may reside in a removable storage device or in a fixed storage device or in other types of storage devices.
Obviously, the use of non-persistent memory modules as a block storage that is attached to the computer sub-system's memory bus is limited in use due to the inability of the memory to retain information during a power interruption or when the system is powered off. Adding a battery power pack, supercap and/or non-volatile memory components and/or controller contribute to extra cost, lower reliability, higher component count, significantly more power consumption, and higher design complexity.
What is needed is a computer sub-system using other than persistent memory as its memory modules attached to the memory bus that are used to store information in a block storage manner by the computer sub-system without constant power required to retain data. The computer sub-system can configure and manage the PMM as block storage using the following five options:
Option 1—Legacy BIOS
Option 2—Extended legacy BIOS
Option 3—Customized legacy BIOS
Option 4—Extended UEFI BIOS
Option 5—Customized UEFI BIOS
Some of the terms used herein are defined as follows:
Legacy BIOS: a legacy (with no UEFI support) BIOS. Example: BIOS that comes with a computer system that is sold by manufacturer.
Extended legacy BIOS: a legacy (with no UEFI support) BIOS that couples with a BIOS extension software which resides in a non-persistent memory device. This device is mounted on a PCIe add-on card. The PCIe add-on card is attached to the computer sub-system's PCIe bus.
Customized legacy BIOS: a replacement BIOS of a legacy BIOS that couples with legacy BIOS functions and the BIOS extension software in a single non-persistent memory device. The customized legacy BIOS software can be subroutine or library routine.
Extended UEFI BIOS: an UEFI BIOS that couples with customized UEFI PMM extension software. The customized UEFI PMM extension software may reside in a removable storage device such as a USB flash drive or in a specific location on a fixed storage device.
Customized UEFI BIOS: a replacement BIOS of a UEFI BIOS that couples with UEFI BIOS functions and a customized UEFI PMM extension software. The customized UEFI PMM extension software can be software applications, software driver or subroutine or library routine.